发布时间:2020-10-05 19:06 原文链接: python修炼day29(二)

在这里碰见一个问题:

Linux 中客户端的代码可以和别人 Windows 中服务器的代码可以链接,但是无法下载, 不知道是因为系统是原因还是什么其他原因。

线程练习代码

简单的多任务线程

import threading

import time

def sing():

"""唱歌"""

for i in range(5):

print("---正在唱歌----")
       time.sleep(1)

def dance():

"""跳舞"""

for i in range(5):
       print("---正在跳舞---")
       time.sleep(1)

def main():

# 创建对象

t1 = threading.Thread(target=sing)

t2 = threading.Thread(target=dance)

# 启动子线程

t1.start()

t2.start()

if __name__ == '__main__':

main()

多任务——继承

import threading

"""由继承来实现多任务"""

class MyThread(threading.Thread):

def __init__(self, num):  # 重写父类方法

super().__init__()

self.num = num

def run(self):   # 重写父类方法

for i in range(self.num):

print(i)

if __name__ == '__main__':

t1 = MyThread(10)

t1.start()  # 调用父类中的start方法会创建一个子线程, 子线程会自动调用子类中的run方法

互斥锁解决资源竞争问题

import threading

import time

# 新建全局变量

gl_nums = 0

# 新建锁

# 使用锁来解决资源竞争问题

mutex = threading.Lock()

def test1(num):

global gl_nums

for i in range(num):
       # 上锁
       mutex.acquire()
       gl_nums += 1
       # 解锁
       mutex.release()

print("----test1  %d----" % gl_nums)

def test2(num):

global gl_nums

for i in range(num):
       # 上锁
       mutex.acquire()
       gl_nums += 1
       # 解锁
       mutex.release()

print("----test2  %d----" % gl_nums)

def main():

t1 = threading.Thread(target=test1, args=(1000000,))

t2 = threading.Thread(target=test2, args=(1000000,))

t1.start()

t2.start()

time.sleep(2)

print("---main  %d----" % gl_nums)

if __name__ == '__main__':

main()

线程听了个迷迷糊糊,把代码多敲几遍吧。。。

刚才吃完饭回来抽空研究了一下如何翻墙,嗯,折腾了一会,成功翻了出去,一直听说墙外的世界很精彩,终于可以一睹真面目了。。。

对于如何翻墙感兴趣的可以联系我。