python之多线程的简单案例

困成狗,今天完善我的树的时候发现在我的MCTS树里面执行画图plt.show()简直是超级耗时....然后身为资深学渣的我想到了靠多线程处理这个....

def target():
        print ('the curent threading  %s is running' % threading.current_thread().name)

print ('the curent threading  %s is running11111111' % threading.current_thread().name)
t = threading.Thread(target=target)
t.start()
#t.join()
print ('the curent threading  %s is ended11111111111' % threading.current_thread().name)

上面输出:

the curent threading  MainThread is running11111111
the curent threading  Thread-1 is running

the curent threading  MainThread is ended11111111111

由于我们注释掉了t.join(),所以上面的运行是:主线程和子线程交替独立执行。

如果我们把t.join()的注释去掉,那么结果是先打印“the curent threading  MainThread is running11111111”,然后执行完target()函数,才又回到主线程去继续执行“the curent threading  MainThread is ended11111111111”的。相当于单片机中的中断概念了。

要注意的一点是,target函数不要加(),你会发现如果不小心加了(),t.join()就会“失灵”。

因为在Python中,调用函数时带括号和不带是有区别的:

1、不带括号时,调用的是这个函数本身 ,可能返回的是地址值之类的。

2、带括号(如果需要传入参数就要传,),会执行这个函数,返回的是函数的return结果。

例如:(这是别的博主的代码)

def a(x):
      return x
print(a)    #不带括号调用的结果:
print(a(3)) #带括号调用的结果:3

然后我发现还是没能解决我的问题....还是卡,可能plt.show()本身就比较慢,之前看到有问题说这个居然运行了200ms......

参考资料

你可能感兴趣的:(python)