Trending December 2023 # A Field Guide To Free Software Supporters # Suggested January 2024 # Top 12 Popular

You are reading the article A Field Guide To Free Software Supporters updated in December 2023 on the website We hope that the information we have shared is helpful to you. If you find the content interesting and meaningful, please share it with your friends and continue to follow and support us for the latest updates. Suggested January 2024 A Field Guide To Free Software Supporters

Hearing the terms “free software” or “open source,” you might imagine that they referred to a single school of thought. Even “free and open source software” (FOSS) suggests only two different outlooks: Free software, which values political and philosophical freedom, and open source, whose main interest is enhanced software quality.

Yet all these impressions would be misleading. When you look, there are at least seven different types of FOSS supporters.

To outsiders, these schools of thought are more similar than different. In the same way that many Europeans see few real differences between a New Englander and a Californian, outsiders may see little to distinguish a Softcore Advocate from an Activist.

However, to those inside the FOSS community, the differences are enough to spark endless flame wars. As Richard Stallman told me last March, “When people are free to choose their own views, they’re not all going to agree. It’s normal in a community that you have people with different views and values”

(To say nothing of different language; in many parts of the community, whether you use “free software” or “open source” can mean the difference between cooperation and hostility.)

GNU/Linux Columns

The Making of KDE 4.0

Free Software Foundation’s “High Priority” List

Open Source Pros Pick their Favorite Projects

FREE Tech Newsletters

To help you navigate through the community, here is a no-holds-barred summary of the most basic schools of thought within the community:

Unlike other types of FOSS supporters, Microsoft Haters are not concerned with ideals, but with opposition to Microsoft. If those I’ve observed on the Fedora list in recent months are typical, some dislike other types of free software supporters almost as much as they do Microsoft.

Some Microsoft Haters object to Microsoft as a monopoly, or as the epitome of proprietary software companies. Increasingly, too, some object from a consumer activist position to Microsoft’s support of lockdown technologies.

However, given that very few of them voice objections to near-monopolists like Adobe or other large proprietary companies like Apple, most Microsoft Haters apparently assume their stance largely as a rebellion. They seem to take their identity from their opposition. And, in extreme cases, could be described as conspiracy theorists, seeing Microsoft cabals in everything.

Many, too, are young and seem to be seeking acceptance from their peers, taking great delight in using terms like “Microsloth” and “Windoze.” A noisy group, they probably receive more attention than their actual numbers would justify.

Just as importantly, a sub-group of Bargain Hunters is more idealistically oriented. They are the ones who have realized that cash-strapped developing countries, charities, or academic institutions will have to turn to FOSS if they want to build a technical infrastructure. In their own way, members of this sub-group are as idealistic as the FOSS activists.

Open Source idealists are sometimes denounced as caring little about the rights of other users. However, they would argue that this view is a false dichotomy, and that they operate out of a sense of enlightened self-interest, and ultimately help everyone.

Softcore Advocates are those who express a preference for free software, but are not willing to face much inconvenience to use it. While they will seriously consider using free software, they will only do so if it is as good as or, preferably, better than proprietary equivalents. If the proprietary equivalent is superior, they will happily use it instead.

This attitude is common in business, because software purchasers in commercial ventures generally have to justify their decisions in economic and practical terms — and rarely in philosophical ones. Yet it is just as likely to be found in users of stand-alone home systems who insist on nothing but the best. Either way, they represent one of the two largest FOSS camps — which are also the two camps most likely to be reviled for inconsistency and undermining the community.

GNU/Linux Columns

The Making of KDE 4.0

Free Software Foundation’s “High Priority” List

Open Source Pros Pick their Favorite Projects

FREE Tech Newsletters

Supporters of this position argue that they are simply trying to find a balance between their beliefs and everyday demands. And, for those who are not in business for themselves, perhaps it is a reasonable position to take, since they are unlikely to have control over what software or file formats they are required to use. However, Hardcore Advocates sometimes denounce them as hypocrites, or at best lukewarm supporters. Their own uneasiness over their position suggests that, deep down, members of this group often accuse themselves of the same failings.

The Hardcore Advocates are the purists. Unlike the Softcore or the Moderates, they strongly oppose the use of proprietary software under any circumstances whatsoever. They are equally opposed to using software that, while free in itself, requires proprietary software to run, such as Java projects before the Java code was released in November 2006. At times, this stance means doing without support for such software as the latest version of Flash, or limping along with low level optical character recognition of the type supported by Kooka or Tesseract.

The Hardcore are willing to put up with such inconveniences because they believe that, in the Internet Age, the availability of free software is a corollary of free speech. After all, if access to computerized information systems requires the purchase of software, then free speech can only be enjoyed by those who can afford to purchase it.

The traditional bastion of the Hardcore has always been the Free Software Foundation. However, it is far from the only one. Some Hardcore groups have been known to adopt an even more radical position than the Free Software Foundation. Debian, for instance, considers some uses of the GNU Free Documentation License non-free, while the Free Software Foundation considers these same uses perfectly free.

The Hardcore position is getting easier to maintain with every passing month, as more and more functionality becomes available under free software. All the same, it can be hard to follow Hardcore principles unless you are a student or a freelancer, or an undemanding user.

In the last few years, largely because of the increased involvement in social issues by the Free Software Foundation, another FOSS group has begun to emerge. This group is the Activists, who, almost alone among the types described here, try to take their principles outside the community by forging alliances with mainstream environmentalists and other social activists.

This is the position taken by Peter Brown, executive director of the Free Software Foundation, when he says, “Free software should be an obvious civil-society issue. It should be as obvious as recycling cans. It should be something that every parent should be asking when they go into a parent-teacher meeting: is the school using free software? Is my child being taught to use free software? Having control over your computer and knowing that your devices aren’t spying on you, that you have an ethical computer, [these] are all issues for civil society.”

Besides venturing outside the world of developers and free software, activists also differ from Hardcore Advocates in their generally greater tolerance for those who fail to adhere to strict free software principles. They are no less dedicated to those principles, but their dedication seems tempered by the real world realization that hectoring people is a poor way to make them become supporters. They see their role as educators, rather than evangelists.

GNU/Linux Columns

The Making of KDE 4.0

Free Software Foundation’s “High Priority” List

Open Source Pros Pick their Favorite Projects

FREE Tech Newsletters

In practice, too, human behavior is not nearly consistent enough for pigeon-holing. While many people fall fairly definitely into one of these camps most of the time, many can probably be classified under different types at different times.

For instance, Linus Torvalds, although described here as an Open Source Programmer, could be said to be acting like a Softcore Advocate a few years ago when he insisted on using the proprietary BitKeeper for version control on the Linux kernel (he has since moved to free software). Probably most members of the community have acted like members of all these types from time to time, even though most favor one type of behavior over the others.

Nor are these types necessarily the only ones in FOSS. Rather, they are simply the ones that I’ve encountered.

Still, despite these qualifications, this field guide does show that there is more variety of opinion and behavior in the FOSS community than is often credited. If you are an outsider being introduced to the community, or a FOSS supporter moving outside your usual circles, you could do far worse for yourself than to identify beforehand the approximate positions of those with whom you are mingling. Otherwise, your interactions could quickly become far more complicated and unpleasant than they need to be.

You're reading A Field Guide To Free Software Supporters

Ashampoo Winoptimizer Is A Free Software To Optimize Windows Pc

Proper optimization is very important for the smooth functioning of your PC. While there are many free PC optimizers available in the online market, it is very important to get a good one. Ashampoo Win Optimizer is a powerful software that scans, cleans, and optimizes your Windows PC effectively, thereby improving functionality and stability. It is a simple program and requires no specific technical knowledge to use. The main overview has it all. You just need to download the install the program with the activation key. You can get the activation key from the official page of the program.

Ashampoo WinOptimizer review

Maintain System

With the Ashampoo Win Optimizer 2023, you can optimize and maintain your computer system easily. It helps you clean up your system and free space by removing all junk files, and the web browsing traces which clog a lot of space on your PC. It has individual tools like the drive cleaner, registry optimizer, and internet cleaner.

Improve Performance

It is very important to manage the Windows services to get your PC to perform well, and this is where Ashampoo Winoptimizer helps. It has an individual tool for managing the Windows services, tuning your startup, tune-up your internet connection, managing the running processes, uninstalling useless applications and programs and optimizing your PC for SSD wizards.

Customize Windows

Tweaking the Windows programs may sometimes lead to errors or may cause some harm to your PC, but this optimizer backs up all the registry changes you make, so even if you make some mistakes, you can undo them and get back the original configurations.

Analyze System

You have to know your system to optimize it. This function of Ashampoo WinOptimizer will help you know more about your PC. Here you can get detailed information about your PC, the processor, the hardware, software, drives, multimedia, and network.

You can also explore your drives in detail. Just select the drive you want to explore, and the program will scan the files and folders of the drive, sort them by size and give you the detailed report in just a few seconds.

Other tools are the HDD Benchmark, System Benchmark, HDD Inspector and the Font Manager. The HDD Inspector lets you scan your hard disk and check if it is working properly or not.

File Tools

We often forget to delete useless files from our PC, and this gradually starts hogging the space which further slows down your PC. The File Tools of this PC optimizer helps you wipe out the files from the PC, encrypt or split them and also helps to check the invalid program shortcuts cluttering the space on your PC. It happens quite often when we delete the programs, but the shortcut is stored somewhere on the PC. While the file wiper is not of much use, the file manipulator and link check will help you optimize the PC really well. You can just select all the invalid shortcuts and delete them in one go.


Taking backups is a good habit, but it is also important to delete obsolete backups. From this function of the Ashampoo WinOptimizer, you can delete obsolete backups in one go.


This module helps you check the detailed statistic of the number of files and folders scanned and deleted, the number of registry keys scanned and deleted, the number of backups, and other details.

You can download it here from chúng tôi .

These other Ashampoo software may also interest you:

Plotting Software: 7 Best Free To Use In 2023

Plotting Software: 7 Best Free to Use in 2023






To fix Windows PC system issues, you will need a dedicated tool

Fortect is a tool that does not simply cleans up your PC, but has a repository with several millions of Windows System files stored in their initial version. When your PC encounters a problem, Fortect will fix it for you, by replacing bad files with fresh versions. To fix your current PC issue, here are the steps you need to take:

Download Fortect and install it on your PC.

Start the tool’s scanning process to look for corrupt files that are the source of your problem

Fortect has been downloaded by


readers this month.

Whether you want to plot a graph for academic and research publication or hypothesis testing, a quality graph will always leave a long-lasting impression and can make a huge difference in the impact it has on the viewers.

If you have plotted graphs before, you would already know how Microsoft Excel comes with a built-in graph option along with different types of charts to create a desired graph by highlighting data.

However, Microsoft Excel does lack on features when it comes to customization. Premium software like the Grapher and OriginPro offers a more sophisticated solution graph plotting along with tons of customization options.

But, if you don’t want to spend a fortune on software for graph plotting, there are a few open-source graph plotting software that are free to use and offer a decent set of features.

In this article, we take a look at the best free and paid software for Graph plotting that offers all the features you need to create stunning graphs in no time.

If you are looking for the best software for 2D and 3D graph plotting, then Adobe Illustrator is what you are looking for.

Moreover, as this is a vector-based design software, your artwork will look just as great on a mobile screen as it looks on PC.

The tool offers a multitude of features that allows you to create amazing art from simple shapes and colors.

With Adobe Illustrator you can create effects and edit all the individual characters in an original way, that will make everyone admire your work.

Moreover, you can access your work from everywhere, as it will be stored in the Cloud and it will always be up to date.

You can read even more about Adobe Illustrator in this article.

Adobe Illustrator

Creat your best beautiful graphics and illustrations with this amazing tool. Customize it and bring your artwork to the next level!

Free trial Visit website

Plotly is a modern cloud-based graph plotting solution that allows you to create, save, and publish graphs online.

The saved graphs can also be downloaded to your computer for offline use in multiple formats.

Plotly is free to use and get started. To save the graphs, you need to create a free account.

Apart from the graphs, Plotly also offers tools to create charts, dashboards, and data sets.

In the work area (editor) you can change the structure to Subplots from Traces, change the theme, style for traces, axes, legend, annotation shapes and image and analysis enables you  manage curve fitting and moving average.

You can add as many traces as you want and later change the traces type to create graphs with given data.

⇒ Get

Zoho Analytics (formerly known as Zoho Reports) is a could-based business and reporting solution targeted at sale managers, analysts, consultants, CXOs, and other individuals looking for a reporting solution.

Zoho allows the users to create different types of charts including heat map charts, combination charts, area charts, funnel, etc.

For plotting, you can begin with a Scatter chart which is also one of the commonly used charts for plotting and comparing scientific and engineering data.

Zoho Analytics is an all-in-one solution for analytics report creation and data analysis. As a result, it comes with more than just plotting features.

Other notable features of Zoho Analytics include the ability to create a beautiful dashboard for bringing multiple reports into a single dashboard.

Zoho Analytics is a premium solution and one of the most recommended tools for reporting and analytics use.

You can create a free account and use the software to understand if it can meet your requirement before making any commitment.

⇒ Get Zoho Analytics 

Gnuplot is not new to the world of graph plotting. It is one of the most popular open-source software that has been made available free for users.

Unlike the previously listed software, Gnuplot requires you to use commands to create graphs.

It is a complete command-line based tool, so you need to know your way around basic programming to get it working.

Expert tip:

However, over the years the software has gone through reforms to accept scientific data in both 2D and 3D plots.

Even for intermediate users who have never used a command-line graph plotting tool, the vast collection of resources will make it easy to get started with the tool and start creating a visual representation of complex data.

⇒ Get Gnuplot 

Scientists who are looking for a  free tool to visualize their data in graphs, Matplotlib is an excellent piece of open-source software.

It is a free tool but suffers from the same challenges as Gnuplot.

Matplotlib is a 2D Python library for graph plotting and requires the user to use Python script on computer or web applications.

The user interface of Matplotlib is identical to Matlab except that it is not a GUI based tool.

Matlab uses a module named pyplot that provides features to control line styles, formatting axes, etc for plotting.

Compared to Gnuplot, Matplotlib only works with Python which is not the case with Gnuplot.

However, on the plus side, the end result of Matplotlib requires less finishing touchup and comes out in ready-to-use shape.

⇒ Get Matplotlib 

R is a programming language and a free software environment for statistical computing and graphics.

The tool is widely used by scientists and engineers working with an enormous amount of data.

While Gnuplot can be used with any language and Matplotlib requires Python to work, R requires you to learn R, the programming language to make it work.

R offers a wide range of graph types including box plot, histogram, density curve, scatter plot, line plot, etc, in both 3D and 2D formats allowing the users to display the data visually.

However, the end result may require some retouching to make the graphs look more polished.

R is a powerful programming language and an ideal solution for statistical computing and data analysis on Windows, macOS, and Linux running computers.

⇒ Get R Project 

Veusz is another popular tool for scientific plotting and graphics with support for both 2D and 3D plots.

It is a free and open source software and compatible with Windows, macOS and Linux computers.

Veusz can be used as a module in Python for plotting. The output feature of the tool including vector and bitmap output including PDF, Postscript, SVG and EMF.

In addition, the user can export data from text, CSV, HFS and FITS files.

You can manipulate the existing data sets to create new data sets using mathematical expressions.

It also supports third-party plugins to extend the features including the ability to import new data formats and task automation.

Some of the 2D plotting features include the ability to create X-Y plots with error bars, colours and sizes, Live and function plots, Images with colour mappings and colour bars, stepped plots, bar graphs etc.

And 3D plotting features include the ability to create 3D point plots, surface plots from data, function line plots, 3D axes etc.

Other notable features in the software are data picker, interactive tutorial and multithreaded rendering.

Veusz is a GUI based tool, hence easier to use and learn. For new users can benefit from the vast collection of tutorials.

⇒ Get Veusz 

If none of the above tools meets your requirement, try more premium and dedicated graph plotting software like Grapher, Matlab, SigmaPlot, and Origin.

These are commercial software and are not cheap. That being said, they are being used by some of the leading companies in the data analytics section.

It is important to have a graph plotting software to create stunning and information 2D and 3D graphs so that you can present complex analytics data in a better and simplified way.

Still experiencing issues?

Was this page helpful?


Start a conversation

Dreamplan Home Design Software Free Download: How To Use It?

Our Review Pros User-friendly home designer with intuitive controls Building, exterior, interior, decks, and landscaping options Wizard to trace images Import 3D models and textures Export options Forever-free version Cons Outdated interface The free version doesn’t have landscaping and extra tools What is DreamPlan Home Design Software?

Made by NCH Software, DreamPlan Home Design Software is a Windows application that provides you with the means necessary for building your home. It’s also available for Mac OS X and Kindle.

You can decorate the interior and exterior, place various objects in rooms or outside to design your garden, control the terrain, as well as simulate lighting.

This type of application helps current or future homeowners visualize their ideal house. NCH DreamPlan can be used for designing an exact replica of your actual home to see what improvements can be made by adding a new room or clearing up the yard. But it’s also a tool you can use to create a blueprint of a new house from scratch by taking into account your measurements, requirements, and wishes.

Keep reading to find out the system requirements, editions, getting started steps, features, and DreamPlan Home Design Software review.

DreamPlan Home Design Software system requirements

Before you download DreamPlan Home Design Software on your computer, make sure that you need the following requirements:

Windows 10

, 8.1, 8, 7, Vista, XP (either 32-bit or 64-bit)

64 Mb

video card

with Pixel Shader 2.0 support

DreamPlan Home Design Software free version

NCH DreamPlan is available in multiple editions, including a free mode that has no time restrictions. However, the landscaping and extra tools are deactivated, and you can’t use DreamPlan Free for commercial purposes. Even so, this shouldn’t stop you from designing your home, as long as you don’t plan to publish or sell the blueprints.

If you want to unlock the landscaping and extra tools but keep using the program for non-commercial purposes, you can purchase DreamPlan Home Design Software Home. But if you also wish to integrate the tool with your business solutions, then you should get DreamPlan Home Design Software Plus instead.

In both cases, you have to pay for the product only once since there are no subscription plans involved, so you don’t have to worry about recurring monthly bills. Furthermore, you will receive a 30-days money-back guarantee so that you can ask for a refund if you’re not completely pleased with DreamPlan Home Design Software within the first month of use.

How to install NCH DreamPlan

You can quickly download DreamPlan Home Design Software, even on poor Internet connections, thanks to the fact that it’s lightweight. Installing the software application should go smoothly after accepting the license terms because you don’t need to confirm anything else. But it’s not possible to pick a preferred install folder or control desktop shortcuts.

When you launch NCH DreamPlan, you can load one of the sample projects to get familiarized and find out what you can do with the tool. You can also consult some online video tutorials as well as easily trace a design in 2D blueprint mode with the aid of a wizard.

How to use DreamPlan Home Design Software

You can paint the walls by switching to Paint tab and selecting the wall style and color.

Similarly, you can add new elements to the home plan.

A cool home designer for casual users

To conclude, you can download DreamPlan Home Design Software to easily create home plans on your Windows PC. It doesn’t have the most sophisticated-looking interface, but it’s easy to use.

Using NCH DreamPlan, you can create a new building as well as decorate the interior and exterior with minimal effort. And, if you get stuck at any point, you can check out online video tutorials and help documentation.

There’s a rich library with preset objects and designs you can use, but it’s also possible to import 3D models and texture from external sources. For instance, if you created furniture designs with another application, you can import them into DreamPlan Home Design Software to beautify your home with the exact furniture you’ve been dreaming of.

On the other hand, we’ve noticed that the software program uses a considerable amount of RAM. Also, it sometimes has delays in carrying out simple commands, like importing a 3D model.

FAQ: Learn more about DreamPlan Home Design Software

How do I get more furniture for DreamPlan Home Design?

How to create a porch with DreamPlan by NCH Software?

Switch to Decks tab and use the Decking, Railing, Stairs, and Footing tools to create a porch.

How to print DreamPlan?

Open File and select Print (or press Ctrl + P). Set the Paper Size, Orientation, and Margins (in inch), then press Print.

How To Become A Cdo: Explore The Field Of Data Leadership

blog / Data Science and Analytics How to Become a CDO: Explore the Exciting Field of Data Leadership

Share link

Did you know? Over 319 billion emails were sent around the globe in 2023. And, Google processes over 8.5 billion searches a day. It’s no wonder British mathematician Clive Humby termed data the new ‘oil’. Nearly every company today relies on data for its decision-making. This demand for data and those who can understand it has resulted in the creation of job titles that didn’t exist until a few decades ago, like the Chief Data Officer (CDO). What does it entail, and how to become a CDO? Let’s find out!

What is a CDO?

ALSO READ:  Data Science vs Data Analytics: Key Differences & Opportunities

Where Do CDOs Come From?

The title of Chief Data Officer didn’t exist until a few years ago. Then, the handling of data and its security came under the purview of a chief information officer. The exponential rise in the volume of data and its value in business led to this title. According to Gartner, 63 per cent% of global chief data officers had prior experience in a data/analytics-related job. However, only 9 per cent% of CDOs come from an IT background. 

What Does a CDO Do?

A guide on how to become a CDO is incomplete without understanding the job description and responsibilities. Therefore, let’s look at everything a CDO does as part of their job role:

Overlooks the company’s data governance, security, and privacy

Facilitates innovation and digital transformation within the organization  

Creates cognizance of data security, governance, and privacy within the organization

Safeguards the company’s data assets

Works closely with and often reports to the chief information officer.  

Builds a robust data ecosystem and inspires a data-driven culture

How to Become a CDO Step 1: Get the Education You Need

Typically, a CDO should have a Ph.D. or a master’s degree in any data-related field, like data science or analytics, computer science, or statistics. However, along with a Ph.D. or Master’s, several experienced executives opt to undertake MBAs from elite universities or management programs to break into a C-suite role like that of a CDO. 

Step 2: Gain Necessary Experience

Most companies, including startups, expect individuals applying for CDO positions to have a minimum of 5-7 years of experience in the field. This can go up to 10-12 years of experience for larger companies. Given that it is a relatively new job title, the number of years may not matter as much as the depth and quality of your experience. Getting involved in and executing challenging projects adds significant value to your experience.

Step 3: Develop Leadership Skills

Chief data officers work with multiple teams across different channels, which requires them to possess exceptional leadership capabilities. One of the essential skills for any chief data officer is having excellent communication skills. As the common point across multi-functional teams, a CDO must communicate effectively with all invested parties. Additionally, C-suite executives must have empathy, critical and analytical thinking capabilities, and decision-making skills. These leadership skills can be developed over time with experience and acquired through learning.  

Step 4: Expand Your Influence

Networking is something all industry leaders and executives swear by, and rightfully so. Building the right connections can help you expand your knowledge and opportunities. Connecting with fellow industry experts and leaders is an excellent way to exchange ideas, learn about new changes in the market, and onboard expert individuals into your team. 

Step 5: Master People and Team Management Skills

A strong team goes a long way, especially when working in a complex and dynamic environment. A chief data officer will work with teams consisting of a diverse mix of people. Hence it’s imperative to learn the skill of managing large, diverse teams. Often, it’s easier to manage data than to manage people.

Step 6: Hone Your Data Analytics Skills

The foundation of a chief data officer’s role is deriving meaning from raw data. Therefore, as a CDO, you must have a deep and thorough understanding of data science and analytics. 

Step 7: Utilize the Connection Between Data Analytics and Business Performance

Any business that hires a CDO aims to improve its business performance. Processing chunks of raw data into a valuable output in decision-making is, broadly, the role of a chief data officer. This requires the CDO to have a deep understanding of the business, the threats & challenges it faces, and the targets set. Only then can a CDO successfully build a connection between his expertise and the business itself.  

What Teams Does a CDO Manage? What Makes a CDO Successful?

To succeed as a CDO takes more than just being good with data and analysis: 

Be data-focused to derive maximum meaning from raw data. 

Build a bridge between data, business processes, and decisions to create a seamless customer experience and make informed business decisions.

Be business-centric and analytically driven. 

Effectively communicate with relevant stakeholders.

At Emeritus, we understand what it takes to be a CDO. Beyond the information in books and the internet, it is about learning from industry leaders and their experiences. We work with the world’s leading universities to build programs that will provide you with the right resources to chart your path toward professional success. Learn more about our portfolio of online leadership and data science courses here.

By Twisha Soni

Write to us at [email protected]

A Beginners Guide To Multi

This article was published as a part of the Data Science Blogathon

In the era of Big Data, Python has become the most sought-after language. In this article, let us concentrate on one particular aspect of Python that makes it one of the most powerful Programming languages- Multi-Processing.

Now before we dive into the nitty-gritty of Multi-Processing, I suggest you read my previous article on Threading in Python, since it can provide a better context for the current article.

Let us say you are an elementary school student who is given the mind-numbing task of multiplying 1200 pairs of numbers as your homework. Let us say you are capable of multiplying a pair of numbers within 3 seconds. Then on a total, it takes 1200*3 = 3600 seconds, which is 1 hour to solve the entire assignment.  But you have to catch up on your favorite TV show in 20 minutes.

What would you do? An intelligent student, though dishonest, will call up three more friends who have similar capacity and divide the assignment. So you’ll get 250 multiplications tasks on your plate, which you’ll complete in 250*3 = 750 seconds, that is 15 minutes. Thus, you along with your 3 other friends, will finish the task in 15 minutes, giving you 5 minutes time to grab a snack and sit for your TV show. The task just took 15 minutes when 4 of you work together, which otherwise would have taken 1 hour.

This is the basic ideology of Multi-Processing. If you have an algorithm that can be divided into different workers(processors), then you can speed up the program. Machines nowadays come with 4,8 and 16 cores, which then can be deployed in parallel.

Multi-Processing in Data Science-

Multi-Processing has two crucial applications in Data Science.

1. Input-Output processes-

Any data-intensive pipeline has input, output processes where millions of bytes of data flow throughout the system. Generally, the data reading(input) process won’t take much time but the process of writing data to Data Warehouses takes significant time. The writing process can be made in parallel, saving a huge amount of time.

2. Training models

Though not all models can be trained in parallel, few models have inherent characteristics that allow them to get trained using parallel processing. For example, the Random Forest algorithm deploys multiple Decision trees to take a cumulative decision. These trees can be constructed in parallel. In fact, the sklearn API comes with a parameter called n_jobs, which provides an option to use multiple workers.

Multi-Processing in Python using Process class-

Now let us get our hands on the multiprocessing library in Python.

Take a look at the following code

Python Code:

The above code is simple. The function sleepy_man sleeps for a second and we call the function two times. We record the time taken for the two function calls and print the results. The output is as shown below.

Starting to sleep Done sleeping Starting to sleep Done sleeping Done in 2.0037 seconds

This is expected as we call the function twice and record the time. The flow is shown in the diagram below.

Now let us incorporate Multi-Processing into the code.

import multiprocessing import time def sleepy_man(): print('Starting to sleep') time.sleep(1) print('Done sleeping') tic = time.time() p1 = multiprocessing.Process(target= sleepy_man) p2 = multiprocessing.Process(target= sleepy_man) p1.start() p2.start() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

Here multiprocessing.Process(target= sleepy_man) defines a multi-process instance. We pass the required function to be executed, sleepy_man, as an argument. We trigger the two instances by p1.start().

The output is as follows-

Done in 0.0023 seconds Starting to sleep Starting to sleep Done sleeping Done sleeping

Now notice one thing. The time log print statement got executed first. This is because along with the multi-process instances triggered for the sleepy_man function, the main code of the function got executed separately in parallel. The flow diagram given below will make things clear.

In order to execute the rest of the program after the multi-process functions are executed, we need to execute the function join().

import multiprocessing import time def sleepy_man(): print('Starting to sleep') time.sleep(1) print('Done sleeping') tic = time.time() p1 = multiprocessing.Process(target= sleepy_man) p2 = multiprocessing.Process(target= sleepy_man) p1.start() p2.start() p1.join() p2.join() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

Now the rest of the code block will only get executed after the multiprocessing tasks are done. The output is shown below.

Starting to sleep Starting to sleep Done sleeping Done sleeping Done in 1.0090 seconds

The flow diagram is shown below.

Since the two sleep functions are executed in parallel, the function together takes around 1 second.

We can define any number of multi-processing instances. Look at the code below. It defines 10 different multi-processing instances using a for a loop.

import multiprocessing import time def sleepy_man(): print('Starting to sleep') time.sleep(1) print('Done sleeping') tic = time.time() process_list = [] for i in range(10): p = multiprocessing.Process(target= sleepy_man) p.start() process_list.append(p) for process in process_list: process.join() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

The output for the above code is as shown below.

Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done in 1.0117 seconds

Here the ten function executions are processed in parallel and thus the entire program takes just one second. Now my machine doesn’t have 10 processors. When we define more processes than our machine, the multiprocessing library has a logic to schedule the jobs. So you don’t have to worry about it.

We can also pass arguments to the Process function using args.

import multiprocessing import time def sleepy_man(sec): print('Starting to sleep') time.sleep(sec) print('Done sleeping') tic = time.time() process_list = [] for i in range(10): p = multiprocessing.Process(target= sleepy_man, args = [2]) p.start() process_list.append(p) for process in process_list: process.join() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

The output for the above code is as shown below.

Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Starting to sleep Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done sleeping Done in 2.0161 seconds

Since we passed an argument, the sleepy_man function slept for 2 seconds instead of 1 second.

Multi-Processing in Python using Pool class-

In the last code snippet, we executed 10 different processes using a for a loop. Instead of that we can use the Pool method to do the same.

import multiprocessing import time def sleepy_man(sec): print('Starting to sleep for {} seconds'.format(sec)) time.sleep(sec) print('Done sleeping for {} seconds'.format(sec)) tic = time.time() pool = multiprocessing.Pool(5), range(1,11)) pool.close() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

multiprocessing.Pool(5) defines the number of workers. Here we define the number to be 5. is the method that triggers the function execution. We call, range(1,11)). Here, sleepy_man  is the function that will be called with the parameters for the functions executions defined by range(1,11)  (generally a list is passed). The output is as follows-

Starting to sleep for 1 seconds Starting to sleep for 2 seconds Starting to sleep for 3 seconds Starting to sleep for 4 seconds Starting to sleep for 5 seconds Done sleeping for 1 seconds Starting to sleep for 6 seconds Done sleeping for 2 seconds Starting to sleep for 7 seconds Done sleeping for 3 seconds Starting to sleep for 8 seconds Done sleeping for 4 seconds Starting to sleep for 9 seconds Done sleeping for 5 seconds Starting to sleep for 10 seconds Done sleeping for 6 seconds Done sleeping for 7 seconds Done sleeping for 8 seconds Done sleeping for 9 seconds Done sleeping for 10 seconds Done in 15.0210 seconds

Pool class is a  better way to deploy Multi-Processing because it distributes the tasks to available processors using the First In First Out schedule. It is almost similar to the map-reduce architecture- in essence, it maps the input to different processors and collects the output from all processors as a list. The processes in execution are stored in memory and other non-executing processes are stored out of memory.

Whereas in Process class, all the processes are executed in memory and scheduled execution using FIFO policy.

Comparing the time performance for calculating perfect numbers-


Using a regular for a loop- import time def is_perfect(n): sum_factors = 0 for i in range(1, n): if (n % i == 0): sum_factors = sum_factors + i if (sum_factors == n): print('{} is a Perfect number'.format(n)) tic = time.time() for n in range(1,100000): is_perfect(n) toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

The output for the above program is shown below.

6 is a Perfect number 28 is a Perfect number 496 is a Perfect number 8128 is a Perfect number Done in 258.8744 seconds Using a Process class- import time import multiprocessing def is_perfect(n): sum_factors = 0 for i in range(1, n): if(n % i == 0): sum_factors = sum_factors + i if (sum_factors == n): print('{} is a Perfect number'.format(n)) tic = time.time() processes = [] for i in range(1,100000): p = multiprocessing.Process(target=is_perfect, args=(i,)) processes.append(p) p.start() for process in processes: process.join() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

The output for the above program is shown below.

6 is a Perfect number 28 is a Perfect number 496 is a Perfect number 8128 is a Perfect number Done in 143.5928 seconds

As you could see, we achieved a 44.4% reduction in time when we deployed Multi-Processing using Process class, instead of a regular for loop.

Using a Pool class- import time import multiprocessing def is_perfect(n): sum_factors = 0 for i in range(1, n): if(n % i == 0): sum_factors = sum_factors + i if (sum_factors == n): print('{} is a Perfect number'.format(n)) tic = time.time() pool = multiprocessing.Pool(), range(1,100000)) pool.close() toc = time.time() print('Done in {:.4f} seconds'.format(toc-tic))

The output for the above program is shown below.

6 is a Perfect number 28 is a Perfect number 496 is a Perfect number 8128 is a Perfect number Done in 74.2217 seconds

As you could see, compared to a regular for loop we achieved a 71.3% reduction in computation time, and compared to the Process class, we achieve a 48.4% reduction in computation time.

Thus, it is very well evident that by deploying a suitable method from the multiprocessing library, we can achieve a significant reduction in computation time.

The media shown in this article are not owned by Analytics Vidhya and is used at the Author’s discretion. 

Update the detailed information about A Field Guide To Free Software Supporters on the website. We hope the article's content will meet your needs, and we will regularly update the information to provide you with the fastest and most accurate information. Have a great day!