Alex2ndr
“Это жжж… не спроста!” (с)
Да вы правы, именно этим и занимался, переделывал код что бы вынести создание в функцию. Сейчас почти работает, и это очень интересно, потому что код который внутри класса но не в функций выполняется один раз и становиться общим между трэдами, например:
import socket
import threading
import time
import random
class client(threading.Thread):
print "Run"
temp = 0 + random.randint(1,100)
def connect(self):
HOST = "127.0.0.1"
PORT = 411
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
print "connect true"
print "temp = ",self.temp
return
def run(self):
self.connect()
return
print "thread 1"
client().start()
time.sleep(2)
print "thread 2"
client().start()
По логике должно вывести слово “run” два раза, и вывести два случайных числа, но в итоге мы имеем вот такое:
Run
thread 1
connect true
temp = 43
thread 2
connect true
temp = 43
Видимо код в классе становится общим, но такого описания еще не в какой книжке не видел… Меня тоже насторожило в примере код создания сокета выведено в функцию, и это было единственное различие.