Я новичок в потоковом режиме. Я написал эту программу, где я пытаюсь выполнить две разные функции с помощью потоков. Я пытался запускать различные функции, используя один и тот же поток, путем изменения target
и args
Parameters один за другие:Использование той же темы с различными функциями в python
import threading
import datetime
import Queue
a=Queue.Queue()
b=Queue.Queue()
q=Queue.Queue()
class MyThread(threading.Thread):
def __init__(self,q):
threading.Thread.__init__(self)
self.que=q
t1=threading.Thread(target=self.prints,args=(4,))
t2=threading.Thread(target=self.printy,args=(6,self.que,))
t1.start()
t2.start()
item=self.que.get()
print(item)
print "*"*30
it=item*2
print(it)
t1.join()
def main(self):
t3=threading.Thread(target=self.prints,args=(3,))
t4=threading.Thread(target=self.printy,args=(5,self.que,))
t3.start()
t4.start()
item=self.que.get()
print(item)
print "#"*30
it=item*2
print(it)
t2=threading.Thread(target=self.prints,args=(8,))
t4=threading.Thread(target=self.prints,args=(7,))
t2.start()
t4.start()
t2.join()
t3.join()
t4.join()
def prints(self,i):
while(i>0):
print "i="+str(i)+" "+str(datetime.datetime.now().time())+"\n"
i=i-1
def printy(self,i,b):
r=0
while(i<10):
print "i="+str(i)+" "+str(datetime.datetime.now().time())+"\n"
i=i+1
r=r+i
self.que.put(r)
if __name__=='__main__':
MyThread(a).main()
Он выполнен без метания какой-либо ошибки, а также дал мне выход, я хотел, но я хотел бы знать, если :
- Это правильный способ сделать это? В противном случае, Каков правильный способ запуска нескольких функций с использованием того же потока, что и многократно используемый элемент ?.
- В простой программе, подобной этому, это кажется достаточно безвредным, но как насчет более сложных программ с множеством функций? Любые потенциальные проблемы, которые могут возникнуть?
Таким образом, это может быть сделано только с помощью класса многопроцессорного и не резьб класс? Я хотел знать, есть ли безопасный способ сделать это, используя потоки. –
У вас может быть очередь, где поток вытягивает кортеж (функция, данные). Затем вы можете выполнить функцию с предоставленными данными. – enthus1ast
Не могли бы вы немного рассказать о том же примере? –