并发编程[第一篇]线程

 一.线程的两种调用方式

--直接调用目标函数

import threading
import time
def myThreading():
    time.sleep(2)
    print('子线程正在运行',time.ctime())

def myThreading1():
    time.sleep(4)
    print('子线程1正在运行',time.ctime())


if __name__ == '__main__':
    q = threading.Thread(target=myThreading)
    q1 = threading.Thread(target=myThreading1)

    # q.setDaemon(True)
    # q1.setDaemon(True)

    q.start()
    q1.start()

    # q.join()
    # q1.join()

    print('主线程正在运行',time.ctime())

--继承父类Threading,通过改写run函数实现(执行start()函数时,会调用到run函数)

import threading
import time


class myThreading(threading.Thread):
    # time.sleep(2)
    # print('子线程正在运行')
    def __init__(self,name):
        super().__init__()
        self.name = name
    def run(self):
        time.sleep(2)
        print('子线程{}正在运行'.format(self.name))

class myThreading1(threading.Thread):
    # time.sleep(4)
    # print('子线程1正在运行')
    def __init__(self,name):
        super().__init__()
        self.name = name
    def run(self):
        time.sleep(4)
        print('子线程{}正在运行'.format(self.name))

if __name__ == '__main__':
    q = myThreading(1)
    q1 = myThreading1(2)

    # q.setDaemon(True)
    # q1.setDaemon(True)

    q.start()
    q1.start()

    # q.join()
    # q1.join()

    print('主线程正在运行')

同一进程中的多线程共享进程的资源

import threading
n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了
def work():
    global n
    n=0
    print('子进程内: ',n)

#线程直接的内存空间是共享的
if __name__ == '__main__':
    p=threading.Thread(target=work)
    p.start()
    print('主进程内: ',n)

未完待续。。。。。。。    同步锁,死锁,线程队列

猜你喜欢

转载自www.cnblogs.com/xxp1624/p/11256714.html