开发一个FTP软件
一、开发一个多并发的FTP server
需求:
1、允许同时支持多用户在线 2、用户认证 3、用户空间配额 4、权限限制 5、可上传下载、上传下载过程中显示进度条 6、用户可远程切换目录、查看服务端文件列表等 7、可断电续传
如何实现进度条:
import time,sys for i in range(40): sys.stdout.write("#") sys.stdout.flush() time(0.4)
二、线程进程和CPU原理
进程是一个资源池
三、线程和线程锁
在多个线程同时抢/修改同一份数据的时候,有可能导致出错,那么就需要加锁
#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'Charles' import threading import time def run(num): lock.acquire() #开启锁 global data print ("thread...",num) data -=1 lock.release() #释放锁 time.sleep(1) lock = threading.Lock() data = 100 for i in range(100): t = threading.Thread(target=run,args=(i,)) #启用一个线程,运行函数run,args里面表示run函数的参数,注意一定要加逗号 t.start() #开启线程 print "---data:",data
在python中,python的多线程调用的是操作系统的原生线程,同时工作的线程只有一个,不能利用多核的优势,如果需要多核的优势,可以利用多进程。