python中函数带不带括号的区别
1、不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成;
2、带括号(此时必须传入需要的参数),调用的是函数的return结果,需要等待函数执行完成的结果。
多线程中target=方法名/函数名带不带括号的区别
不带括号时:
import multiprocessing import time def sing(): for i in range(3): print('唱歌') time.sleep(0.5) def dance(): for i in range(3): print('跳舞') time.sleep(0.5) if __name__ == '__main__': sing_process=multiprocessing.Process(target=sing) dance_process=multiprocessing.Process(target=dance) sing_process.start() dance_process.start()
输出结果能实现多线程且为:
唱歌
跳舞
唱歌
跳舞
唱歌
跳舞
带括号时 :
import multiprocessing import time def sing(): for i in range(3): print('唱歌') time.sleep(0.5) def dance(): for i in range(3): print('跳舞') time.sleep(0.5) if __name__ == '__main__': sing_process=multiprocessing.Process(target=sing()) dance_process=multiprocessing.Process(target=dance()) sing_process.start() dance_process.start()
无法实现多线程,且结果为:
唱歌
唱歌
唱歌
跳舞
跳舞
跳舞
结论
要想实现多线程, target=方法名/函数名,后不能带括号()。